using HuiLian.Common.Input;
using HuiLian.Service.Platform.PipeHealth.Input;
using HuiLian.Common.Output;
using HuiLian.Model.Platform;
using System.Threading.Tasks;

namespace HuiLian.Service.Platform.PipeHealth
{
    /// <summary>
    /// 管段健康接口
    /// </summary>
    public interface IPipeHealthService
    {
        /// <summary>
        /// 获取管段健康信息
        /// </summary>
        /// <param name="id">主键</param>
        /// <returns></returns>
        Task<IResponseOutput> GetAsync(long id);

        /// <summary>
        /// 查询管段健康信息
        /// </summary>
        /// <param name="input">分页信息</param>
        /// <returns></returns>
        Task<IResponseOutput> PageAsync(PageInput<PipeHealthEntity> input);

        /// <summary>
        /// 添加管段健康信息
        /// </summary>
        /// <param name="input">管段健康信息</param>
        /// <returns></returns>
        Task<IResponseOutput> AddAsync(PipeHealthAddInput input);

        /// <summary>
        /// 更新管段健康信息
        /// </summary>
        /// <param name="input">管段健康信息</param>
        /// <returns></returns>
        Task<IResponseOutput> UpdateAsync(PipeHealthUpdateInput input);

        /// <summary>
        /// 删除管段健康信息
        /// </summary>
        /// <param name="id">主键</param>
        /// <returns></returns>
        Task<IResponseOutput> DeleteAsync(long id);

        /// <summary>
        /// 软删除管段健康信息
        /// </summary>
        /// <param name="id">主键</param>
        /// <returns></returns>
        Task<IResponseOutput> SoftDeleteAsync(long id);

        /// <summary>
        /// 批量软删除
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task<IResponseOutput> BatchSoftDeleteAsync(long[] ids);

        /// <summary>
        /// 管线状态
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<IResponseOutput> PipelineStatus(PageInput<PipelineStatusInput> input);

        /// <summary>
        /// 健康报告
        /// </summary>
        /// <param name="管段编号"></param>
        /// <returns></returns>
        Task<IResponseOutput> HealthReport(string 管段编号);
    }
}
